﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using Estructuras.Estructura;
using InterfazGrafico.LibreriaClases.Propiedades;
using InterfazGrafico.LibreriaConstantes;

namespace InterfazGrafico.LibreriaClases.Formularios
{
    /// <summary>
    /// Formulario para gestionar la configuración del componente TransformarCondicional.
    /// </summary>
    public partial class FormTransformarCondicional : FormBaseEntradaSalida
    {
        /// <summary>
        /// Manejador del evento click sobre el botón de transformaciones.
        /// </summary>
        /// <param name="sender">Objeto que envía el evento</param>
        /// <param name="e">Parámetros del evento</param>
        private void buttonTransformaciones_Click(object sender, EventArgs e)
        {
            if (string.Empty.Equals(this.ProyectoBase.obtenerFicheroComboEstructura(this.comboBoxEstructuraSalida)))
            {
                MessageBox.Show(Constantes.MensajeErrorEstructuraSalidaNoIndicada, Constantes.MensajeCabeceraError, MessageBoxButtons.OK);
                return;
            }
            FormEstablecerCondicionesTransformaciones form = new FormEstablecerCondicionesTransformaciones(
                new Estructura(this.ProyectoBase.obtenerFicheroComboEstructura(this.comboBoxEstructuraSalida)).obtenerCampos(false),
                this.Propiedades.ListaCondiciones, this.Propiedades.ListaCamposCondiciones,
                this.Propiedades.ListaParametrosCondiciones, this.Propiedades.ListaFuncionesVerdadero,
                this.Propiedades.ListaCamposOrigenVerdadero, this.Propiedades.ListaCamposDestinoVerdadero,
                this.Propiedades.ListaParametrosVerdadero, this.Propiedades.ListaFuncionesFalso,
                this.Propiedades.ListaCamposOrigenFalso, this.Propiedades.ListaCamposDestinoFalso,
                this.Propiedades.ListaParametrosFalso);
            if (form.ShowDialog() == DialogResult.OK)
            {
                form.obtenerValores(this.Propiedades.ListaCondiciones, this.Propiedades.ListaCamposCondiciones,
                this.Propiedades.ListaParametrosCondiciones, this.Propiedades.ListaFuncionesVerdadero,
                this.Propiedades.ListaCamposOrigenVerdadero, this.Propiedades.ListaCamposDestinoVerdadero,
                this.Propiedades.ListaParametrosVerdadero, this.Propiedades.ListaFuncionesFalso,
                this.Propiedades.ListaCamposOrigenFalso, this.Propiedades.ListaCamposDestinoFalso,
                this.Propiedades.ListaParametrosFalso);
            }
        }

        /// <summary>
        /// Propiedades del componente.
        /// </summary>
        private PTransformarCondicional Propiedades
        {
            get
            {
                return (PTransformarCondicional)this._propiedades;
            }
        }

        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="controlAsociado">Control base asociado</param>
        public FormTransformarCondicional(ControlBase controlAsociado)
            : base(controlAsociado, new PTransformarCondicional())
        {
            InitializeComponent();
            this.abrir();
        }

        /// <summary>
        /// Almacena los datos de los parámetros del componente en el interfaz.
        /// </summary>
        public override void cargarParametros()
        {
            base.cargarParametros();
            this.textBoxEntrada.Text = this.Propiedades.Entrada;
            this.textBoxSalida.Text = this.Propiedades.Salida;
            this.ProyectoBase.actualizarComboEstructuras(this.comboBoxEstructuraEntrada, this.Propiedades.EstructuraEntrada);
            this.ProyectoBase.actualizarComboEstructuras(this.comboBoxEstructuraSalida, this.Propiedades.EstructuraSalida);
        }

        /// <summary>
        /// Almacena los datos del interfaz en los parámeros del componente.
        /// </summary>
        public override void guardarParametros()
        {
            base.guardarParametros();
            this.Propiedades.Entrada = this.textBoxEntrada.Text;
            this.Propiedades.Salida = this.textBoxSalida.Text;
            this.Propiedades.EstructuraEntrada = this.ProyectoBase.obtenerFicheroComboEstructura(this.comboBoxEstructuraEntrada);
            this.Propiedades.EstructuraSalida = this.ProyectoBase.obtenerFicheroComboEstructura(this.comboBoxEstructuraSalida);
        }
    }
}
 